iT邦幫忙

2023 iThome 鐵人賽

DAY 3
0
自我挑戰組

轉職仔與JavaScript的初次相遇系列 第 3

JavaScript數值類別(物件型別) - Day03

  • 分享至 

  • xImage
  •  

前言

上篇簡述完基本型別後,此篇將簡述JavaScript值的物件型別以及巢狀意思。

說明

物件型別:

  1. Array(陣列):陣列適合用於將儲存『用途或性質相近數據』在一起。

以下舉例,現在要幫水果行建立庫存表,因此我們需先建立變數儲存這些『水果』資料。

let fruit1 ='香蕉';
let fruit2 = '蘋果';
let fruit3 ='葡萄';

上方這麼做有兩個問題
1. 效率較低,就庫存表需求來說,只需要列出所有水果,不需要分開宣告變數再儲存資料
2. 若後續要調用資料出來,還需要記得變數名稱 (蘋果資料儲存在fruit2而非fruit3)

此時就適合使用Array儲存資料,其用法為使用[]將資料儲存在一起。

let fruits = ['香蕉', '蘋果' , '葡萄'];

然而此時會產生一個新問題,要如何調用Array裡頭的資料?
Array本身是一個『有序』的資料型態,序(index)為排序的意思,其從0開始計算。
因此若我們要調用『香蕉』這個數據,

console.log (fruits[0]) // 香蕉

由此Array既可以解決宣告不同變數導致的效率問題,也能透過『序』來快速調用資料。

以下補充幾點Array特徵

  • Array是可以包含不同資料類型的
  • Array的元素必須使用正整數index才能調閱
  • Array的元素也可以是Array(整體稱為Nested Array巢狀陣列)
let fruits = [['香蕉', '蘋果' , '葡萄'],[10, 15, 17]];
console.log(fruits[0]) //['香蕉', '蘋果', '葡萄']
console.log(fruits[0][0]) // 香蕉
  • Array中的數據可以被更改
let fruits = ['香蕉', '蘋果' , '葡萄']
fruits[0] = '蓮霧' // 將fruits Array第0個元素,重新賦值成'蓮霧'
console.log(fruits) // ['蓮霧', '蘋果', '葡萄']

在上方Nested array中,第0個元素是第1個Array整體,若要調用元素本身需要再使用[]

  1. Object(物件):物件會有property(屬性)以及value(數值),Object適合儲存複雜的數據。
    用法為使用{}儲存資料,
let fruits = {
fruit: ['香蕉', '蘋果', '葡萄'],
fruitStock: [10, 15, 17]
};

Object數據可透過兩種方法調用,點運算子(.)或是使用[],以下舉例。

console.log(fruits.fruit1Stock) // 10
console.log(fruits['fruit1Stock']) // 10 (需注意使用字串形式)

Object中的數據也可和Array一樣後續更改。

fruits['fruitStock'] = 1; // 修改fruits Object中的fruitStock屬性數據為1
console.log(fruits) // {fruit : ['香蕉', '蘋果', '葡萄'],fruitStock : 1}
  1. Date(日期):日期可用於處理和表示日期和時間數據,以下舉例。
console.log(new Date()); 
//顯示現在時間: Fri Sep 08 2023 18:20:24 GMT+0800 (Taipei Standard Time)

console.log(new Date('December 25 2023')); 
//Mon Dec 25 2023 00:00:00 GMT+0800 (Taipei Standard Time)

console.log(new Date(2023, 11, 25)); 
// Mon Dec 25 2023 00:00:00 GMT+0800 (Taipei Standard Time)
// 需注意月份會從0開始計算,因此輸入11結果會為December

上一篇
JavaScript數值類別(原始型別) - Day02
下一篇
JavaScript運算式和運算子簡介(上) - Day04
系列文
轉職仔與JavaScript的初次相遇30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言